﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EGuayas.Web.Resources;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL;
using System.IO;
using System.Text;
using EntGuayasSLA.BL.Licenciamiento;
using EGuayas.Web.Usuario;
using EGuayas.Web.Auditoria.Admin.Cumplimiento;

namespace EGuayas.Web.Auditoria.admin.Global
{
    public partial class pgAudCum : pgBase
    {  
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                    if (!X.IsAjaxRequest)
                    {
                       Obligaciones objObligacion = wucPeriodicidad.BeginWuc(Request["idOli"], Valores.Codigo_TipoObligacion_Cump, Request["evt"]);
                       if (Request["evt"] == Valores.PageEvento_Modificar)
                       {
                           AuditoriaCumplimiento audCump = AuditoriaCumplimiento.GetEditableRoot(Guid.Parse(objObligacion.AuditoriaId));
                           frmAuditoria.SetValues(new
                           {
                               Periodo = audCump.Periodo,
                               FechaInicio = audCump.FechaInicio.ToShortDateString(),
                               FechaFin = audCump.FechaFin.ToShortDateString()
                           });
                           btnSave.Hide();
                           //                 
                           //wucFases obj = (wucFases)this.uc_fases_002.UserControls[0];
                           //obj.HidenBtnNuevoFase(true);

                           X.Js.Call("pgFn.setReadOnly");
                           //btnSiguiente.Show();
                           //btnAnterior.Show();

                       }
                       else
                       {
                           btnSave.Show();
                           //btnSiguiente.Hide();
                           //btnAnterior.Hide();
                       }
                    }//if (!X.IsAjaxRequest)
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /// <summary>
        /// Grabar información de expediente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            try
            {
                if (!this.wucPeriodicidad.GetIfUpadate())
                {
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Buttons = MessageBox.Button.OK,
                            Icon = MessageBox.Icon.INFO,
                            Title = Titulos.TituloAviso,
                            Message = string.Format("{0} <b>{1}</b>", "Ingrese datos de ", "configuaciones generales")

                        });
                }
                else
                {
                    string stringMsg = "Nueva Auditoria de Cumplimiento creada. Posteriormente configure las respectivas fases";
                    string gridJson = e.ExtraParams["prmValues"];
                    var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);
                    var AuditoriaIdTmp = Request["idAud"];
                    int iCountFases = 0;
                    //Crear auditoria cumplimiento
                    AuditoriaCumplimiento audCump = AuditoriaCumplimiento.NewEditableRoot();
                    audCump.Id = System.Guid.NewGuid();
                    audCump.ExpedienteAuditoriaId = AuditoriaIdTmp;
                    audCump.Periodo = dataItem["Periodo"];
                    audCump.FechaInicio = DateTime.Parse(dataItem["FechaInicio"]);
                    audCump.FechaFin = DateTime.Parse(dataItem["FechaFin"]);
                    audCump.PlanAccion = Valores.Codigo_CHAR_No;
                    audCump.Save();

                    //Crear Fases por defecto
                    //if (GetSessionPage.GetSession(SessionPage.PageGestionAdminAudCumpEdit) == Valores.PageEvento_Nuevo)
                    
                    FaseAuditoriaCumplimientoLista itemsFasesCheck = FaseAuditoriaCumplimientoLista.GetFaseAuditoriaCumplimientoLista();
                    foreach (FaseAuditoriaCumplimientoInfo row in itemsFasesCheck)
                    {

                        FaseAuditoria objFase = FaseAuditoria.NewEditableRoot();
                        objFase.Id = System.Guid.NewGuid();
                        objFase.FaseId = row.FaseId.ToString();
                        objFase.AuditoriaCumplimientoId = audCump.Id.ToString();
                        objFase.FechaInicial = DateTime.Now;
                        objFase.EstadoFase = (iCountFases == 0) ? Valores.Codigo_Estado_Fase_Inicial : Valores.Codigo_Estado_Fase_Creado;
                        objFase.Save();
                        iCountFases = iCountFases + 1;
                    }

                    //Actualizar id auditoria
                    Obligaciones objObligacion = Obligaciones.GetEditableRoot(Guid.Parse(Request["idOli"]));
                    objObligacion.AuditoriaId = audCump.Id.ToString();
                    objObligacion.Tipo = Valores.Codigo_TipoObligacion_Cump;
                    objObligacion.Save();
                                     
                    btnSave.Disable();
                    //Metodo de  ~/Auditoria/admin/Global/pgDetalle.aspx de wuc obligaciones:~/Auditoria/admin/Global/wucLickObligaciones.ascx
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.INFO,
                        Title = Titulos.TituloAviso,
                        Message = string.Format("{0}", stringMsg),
                        Handler = " if (window.parent!=null && typeof window.parent.App.CloseDetallaNuevaAuditoria === 'function') window.parent.App.CloseDetallaNuevaAuditoria();"

                    });
                    this.panContenedorAuditoria.ActiveIndex = 1;
                    this.hddIdAudCum.SetValue(audCump.Id.ToString());
                    //Almacenar en session Id Auditoria de cumpliento Actual
                    //wucFases objWuc = (wucFases)this.uc_fases_002.UserControls[0];
                    //objWuc.EnabledBtnNuevoFase(audCump.Id.ToString());
                }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /*
        protected void OnLoadFasesAdded(object sender, ComponentAddedEventArgs e)
        {
            try
            {
                Ext.Net.Panel panel = (Ext.Net.Panel)e.Control;
                //Similar session page de gestion cumplimiento, ya que contine wuc fases
                SetCustomConfigWucAud(panel, "", this.hddIdAudCum.Value.ToString(), SessionPage.PageGestionAdminAudCumpEdit);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }*/
    }
}